global lista_obtener_primero
extern printf
;void lista obtener primero ( nodo_lista_t **l, nodo_lista_t **n )

%define pp_lista ebp+8
%define pp_nodo ebp+12
%define offset_siguiente 4
%define null 0
section .data

listavacia: db 'ERROR: Lista Vacia',10,0

section .text 
lista_obtener_primero: 

	;enter 0,0	; comentado para probar con valgrind
	push ebp
	mov ebp,esp
	
	push ebx
	push esi
	push edi
	
	mov esi,[pp_lista]
	mov edx, esi
	mov esi,[esi] ; puntero a la lista
	cmp esi, null
	je _lista_vacia
	mov edi,[pp_nodo]
	mov [edi],esi
	
	mov ebx,[esi+offset_siguiente] 
	mov [edx],ebx
	
	mov edi,[edi]	; en edi ahora desreferenciamos para tener el ptr al nodo 
	mov dword [edi+offset_siguiente], null
	
	jmp fin
	
_lista_vacia:
	mov edi,[pp_nodo]
	mov dword [edi],null
	push listavacia
	call printf
	add esp,4
	; Mensaje de error.
	
fin:
	pop edi
	pop esi
	pop ebx
	leave
	ret